home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / igo / src / igo_oper.c < prev    next >
C/C++ Source or Header  |  1993-07-08  |  16KB  |  586 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <file_dlg.h>
  9. #include <time.h>
  10. #include "igo.h"
  11. #include "ban19.h"
  12. #include "kiffile.h"
  13.  
  14. extern int    dialogId_handy ;
  15. extern int    dialogId_title ;
  16. extern int    auto_dialogId ;
  17. extern int    backId ;
  18. extern int    deskTopId ;
  19. extern int    buttonId ;
  20. extern int    blacknameId ;
  21. extern int    whitenameId ;
  22. extern int    numboxId[12] ;
  23. extern int    dbId[2] ;
  24. extern int    placeId ;
  25. extern int    listMenuId[3] ;
  26. extern int    textcommentId[8] ;
  27. extern int    title_dispdialogId ;
  28. extern int    warningId;
  29. extern int    commentdialogId;
  30. extern int    commentId;
  31.  
  32. static char save_fname[84] = "";
  33.  
  34. YMDHM *kifu_playstart_time_read();
  35. YMDHM *kifu_playend_time_read();
  36.  
  37. /*    initDataMIDESK:buttonId:MJ_BUTTONL40の呼び出し関数    */
  38. int    igo_oper(kobj, messId, argc, pev, trigger)
  39. int        kobj ;
  40. int        messId ;
  41. int        argc ;
  42. EVENT    *pev ;
  43. int        trigger ;
  44. {
  45. int banx1, bany1, banx2, bany2, ishi_r, ishi_2r;
  46. int stonex=0;
  47. int stoney=0;
  48. int ichi;
  49. static int waittime = 20;
  50. static short int dx, dy;
  51. static short int shift;
  52.     
  53.     banx1 = BANX;
  54.     bany1 = BANY;
  55.     ishi_r = ISHI_R;
  56.     ishi_2r = ishi_r * 2;
  57.     banx2 = banx1 + (19+1)*ishi_2r;
  58.     bany2 = bany1 + (19+1)*ishi_2r;
  59.     
  60.     if(pev->what == EVMOSDN){
  61.         dx = *((short *)&(pev->info));
  62.         dy = *(((short *)&(pev->info)) + 1);
  63.         shift = pev->shift;
  64.         waittime = 20;
  65.     }
  66.     if(banx1 < dx && dx < banx2 && bany1 < dy && dy < bany2){
  67.         if(shift & SLEFTBTN){
  68.             stonex = ((dx-(BANX+ISHI_R)) / (ISHI_R*2));
  69.             stoney = ((dy-(BANY+ISHI_R)) / (ISHI_R*2));
  70.             ichi=(stonex+1) + (stoney+1)*20;
  71.             if(kifu_put(ichi)!=0){
  72.                 ;
  73.             }
  74.             comment_dispFunc();
  75.         }else{
  76.             kifu_cancel();
  77.             comment_dispFunc();
  78.             
  79.         }
  80.     }else{
  81.         if(shift & SLEFTBTN){
  82.                 kifu_forward();
  83.                 comment_dispFunc();
  84.                 wait(waittime);
  85.                 waittime *= 0.75;
  86.         }else{
  87.                 kifu_back();
  88.                 comment_dispFunc();
  89.                 wait(waittime);
  90.                 waittime *= 0.75;
  91.         }
  92.         
  93.     }
  94.  
  95.     return NOERR ;
  96. }
  97.  
  98. /*    initDataMIDESK:mitem1Id[0]:MJ_MITEML40の呼び出し関数    */
  99. int    igo_init(kobj, messId, argc, pev, trigger)
  100. int        kobj ;
  101. int        messId ;
  102. int        argc ;
  103. EVENT    *pev ;
  104. int        trigger ;
  105. {
  106.     strcpy( save_fname, "");
  107.     kifu_init();
  108.     comment_dispFunc();
  109.     title_dispclearFunc();
  110.     return NOERR ;
  111. }
  112.  
  113. /*    initDataMIDESK:mitem1Id[1]:MJ_MITEML40の呼び出し関数    */
  114. int    igo_read(kobj, messId, argc, pev, trigger)
  115. int        kobj ;
  116. int        messId ;
  117. int        argc ;
  118. EVENT    *pev ;
  119. int        trigger ;
  120. {
  121.     char fileName[80] ;        /*    ファイル名用の配列        */
  122.     int  cell_id;
  123.  
  124.     /*    ファイルダイアログで"取消"が押されたらこれ以下を実行しない    */
  125.     if( fdlgFunc( fileName ) != 0 )
  126.     {
  127.  
  128.         kifu_init();
  129.         if(kifu_read(fileName) != 0){
  130.             /*    オブジェクトをダイアログに取り付ける    */
  131.             MMI_SendMessage( warningId , MM_ATTACH , 1 , backId ) ;
  132.  
  133.             /*    warningIdで示されるオブジェクトを表示する    */
  134.             MMI_SendMessage( warningId , MM_SHOW , 0 ) ; 
  135.  
  136.             return NOERR;
  137.         }
  138.         strcpy(save_fname, fileName);
  139.         kifu_first();
  140.         do{
  141.             cell_id = kifu_forward();
  142.         }while( cell_id != HEAD_CELL && cell_id != REPEAT_CANNOT_BOTTOM_CELL);
  143.         
  144.         if( cell_id == HEAD_CELL){
  145.             kifu_back();
  146.         }
  147.         comment_dispFunc();
  148.  
  149.     }
  150.     title_dispFunc();
  151.  
  152.     return NOERR ;
  153. }
  154.  
  155. /*    initDataMIDESK:mitem1Id[2]:MJ_MITEML40の呼び出し関数    */
  156. int    igo_write(kobj, messId, argc, pev, trigger)
  157. int        kobj ;
  158. int        messId ;
  159. int        argc ;
  160. EVENT    *pev ;
  161. int        trigger ;
  162. {
  163.     char fileName[84] ;        /*    ファイル名用の配列        */
  164.     char wk_fname[80] ;        /*    ファイル名用の配列        */
  165.  
  166.     /*    ファイルダイアログで"取消"が押されたらこれ以下を実行しない    */
  167.     if( fdlgFunc( wk_fname ) != 0 )
  168.     {
  169.  
  170.         strcat(wk_fname, ".kif");
  171.         strcpy(fileName, wk_fname);
  172.         if(kifu_write(fileName) != 0){
  173.             /*    オブジェクトをダイアログに取り付ける    */
  174.             MMI_SendMessage( warningId , MM_ATTACH , 1 , backId ) ;
  175.  
  176.             /*    warningIdで示されるオブジェクトを表示する    */
  177.             MMI_SendMessage( warningId , MM_SHOW , 0 ) ; 
  178.  
  179.             return NOERR;
  180.         }
  181.         strcpy(save_fname, fileName);
  182.     }
  183.  
  184.     return NOERR ;
  185. }
  186.  
  187. /*    initDataMIDESK:mitem1Id[4]:MJ_MITEML40の呼び出し関数    */
  188. int    igo_handy(kobj, messId, argc, pev, trigger)
  189. int        kobj ;
  190. int        messId ;
  191. int        argc ;
  192. EVENT    *pev ;
  193. int        trigger ;
  194. {
  195.     /* よくないけど応急処置 */
  196.     strcpy( save_fname, "");
  197.  
  198.     /*    オブジェクトをダイアログに取り付ける    */
  199.     MMI_SendMessage( dialogId_handy , MM_ATTACH , 1 , backId ) ;
  200.  
  201.     /*    dialogId_handyでされるオブジェクトを表示する    */
  202.     MMI_SendMessage( dialogId_handy , MM_SHOW , 0 ) ; 
  203.  
  204.     /*    オブジェクトをダイアログから取り外す    */
  205.     MMI_SendMessage( deskTopId , MM_DETACH , 0 ) ;
  206.     MMI_SendMessage( buttonId , MM_DETACH , 0 ) ;
  207.  
  208.     return NOERR ;
  209. }
  210.  
  211.  
  212. /*    initDataMIDESK:mitem1Id[3]:MJ_MITEML40の呼び出し関数    */
  213. int    igo_samewrite(kobj, messId, argc, pev, trigger)
  214. int        kobj ;
  215. int        messId ;
  216. int        argc ;
  217. EVENT    *pev ;
  218. int        trigger ;
  219. {
  220.     if(strlen(save_fname) != 0){
  221.         if(kifu_write(save_fname) != 0){
  222.             ;
  223.         }
  224.     }
  225.     
  226.     return NOERR ;
  227. }
  228.  
  229. /*    initDataMIDESK:mitem2Id[0]:MJ_MITEML40の呼び出し関数    */
  230. int    igo_title(kobj, messId, argc, pev, trigger)
  231. int        kobj ;
  232. int        messId ;
  233. int        argc ;
  234. EVENT    *pev ;
  235. int        trigger ;
  236. {
  237.     char tptr[21];
  238.     YMDHM *ymdhm;
  239.     time_t *timer;
  240.     int i, j, k, l;
  241.     struct tm    *current_time;
  242.     static char    *listString1[] = { "黒コミ出し", "白コミ出し", "コミなし" } ;
  243.     static char    *listString2[] = { "半", "ちょうど" } ;
  244.     static char    *listString3[] = { "黒勝ち", "白勝ち", "引き分け" } ;
  245.     
  246.     /*    オブジェクトをダイアログに取り付ける    */
  247.     MMI_SendMessage( dialogId_title , MM_ATTACH , 1 , backId ) ;
  248.  
  249.     /*  値を設定する */
  250.     kifu_blacknameread( tptr);
  251.     MMI_SendMessage( blacknameId, MM_SETTEXT, 3, tptr, 21, FALSE);
  252.     
  253.     kifu_whitenameread( tptr);
  254.     MMI_SendMessage( whitenameId, MM_SETTEXT, 3, tptr, 21, FALSE);
  255.     
  256.     kifu_playspaceread( tptr);
  257.     MMI_SendMessage( placeId, MM_SETTEXT, 3, tptr, 21, FALSE);
  258.     
  259.     /*  日付時刻を設定する */
  260.     time(timer);
  261.     current_time = localtime(timer);
  262.     
  263.     ymdhm = kifu_playstart_time_read();
  264.     if(ymdhm->year== 0){
  265.         ymdhm->year = 1900 + current_time->tm_year;
  266.     }
  267.     if(ymdhm->month== 0){
  268.         ymdhm->month = 1 + current_time->tm_mon;
  269.     }
  270.     if(ymdhm->day == 0){
  271.         ymdhm->day = current_time->tm_mday;
  272.     }
  273.     MMI_SendMessage( numboxId[0], MM_SETNUMBOX, 5, ymdhm->year, 0, 9999, 1, 0);
  274.     MMI_SendMessage( numboxId[1], MM_SETNUMBOX, 5, ymdhm->month, 1, 12, 1, 0);
  275.     MMI_SendMessage( numboxId[2], MM_SETNUMBOX, 5, ymdhm->day, 1, 31, 1, 0);
  276.     MMI_SendMessage( numboxId[3], MM_SETNUMBOX, 5, ymdhm->hour, 0, 23, 1, 0);
  277.     MMI_SendMessage( numboxId[4], MM_SETNUMBOX, 5, ymdhm->minute, 0, 59, 1, 0);
  278.     
  279.     ymdhm = kifu_playend_time_read();
  280.     if(ymdhm->year== 0){
  281.         ymdhm->year = 1900 + current_time->tm_year;
  282.     }
  283.     if(ymdhm->month== 0){
  284.         ymdhm->month = 1 + current_time->tm_mon;
  285.     }
  286.     if(ymdhm->day == 0){
  287.         ymdhm->day = current_time->tm_mday;
  288.     }
  289.     MMI_SendMessage( numboxId[5], MM_SETNUMBOX, 5, ymdhm->year, 0, 9999, 1, 0);
  290.     MMI_SendMessage( numboxId[6], MM_SETNUMBOX, 5, ymdhm->month, 1, 12, 1, 0);
  291.     MMI_SendMessage( numboxId[7], MM_SETNUMBOX, 5, ymdhm->day, 1, 31, 1, 0);
  292.     MMI_SendMessage( numboxId[8], MM_SETNUMBOX, 5, ymdhm->hour, 0, 23, 1, 0);
  293.     MMI_SendMessage( numboxId[9], MM_SETNUMBOX, 5, ymdhm->minute, 0, 59, 1, 0);
  294.     
  295.     kifu_komiread(&j, &k, &l);
  296.     /*    リストメニューの設定をします。                        */
  297.     MMI_SendMessage(listMenuId[0], MM_SETMAXROWCOLUM, 2, 3, 11) ;
  298.     MMI_SendMessage(listMenuId[0], MM_SETCOLUMLEN, 2, 0, 11) ;
  299.     for (i = 0 ; i < sizeof(listString1)/sizeof(char *) ; i++)
  300.         MMI_SendMessage(listMenuId[0], MM_SETROWCOLUM, 3, i, 0, listString1[i]) ;
  301.     if(j== -1){
  302.         j = 0;
  303.     }
  304.     /*    リストメニューの先頭の項目を選択状態とします。        */
  305.     MMI_SendMessage(listMenuId[0], MM_SETROWCOLUM, 4, 
  306.                                         j, 0, listString1[j], TRUE) ;
  307.  
  308.     if(k== -1){
  309.         k = 5;
  310.     }
  311.     MMI_SendMessage( numboxId[10], MM_SETNUMBOX, 5, k, 0, 9999, 1, 0);
  312.     
  313.     /*    リストメニューの設定をします。                        */
  314.     MMI_SendMessage(listMenuId[1], MM_SETMAXROWCOLUM, 2, 2, 9) ;
  315.     MMI_SendMessage(listMenuId[1], MM_SETCOLUMLEN, 2, 0, 9) ;
  316.     for (i = 0 ; i < sizeof(listString2)/sizeof(char *) ; i++)
  317.         MMI_SendMessage(listMenuId[1], MM_SETROWCOLUM, 3, i, 0, listString2[i]) ;
  318.  
  319.     if(l== -1){
  320.         l = 0;
  321.     }
  322.     /*    リストメニューの先頭の項目を選択状態とします。        */
  323.     MMI_SendMessage(listMenuId[1], MM_SETROWCOLUM, 4, 
  324.                                         l, 0, listString2[l], TRUE) ;
  325.  
  326.     kifu_issueread(&j, &k);
  327.     /*    リストメニューの設定をします。                        */
  328.     MMI_SendMessage(listMenuId[2], MM_SETMAXROWCOLUM, 2, 3, 9) ;
  329.     MMI_SendMessage(listMenuId[2], MM_SETCOLUMLEN, 2, 0, 9) ;
  330.     for (i = 0 ; i < sizeof(listString3)/sizeof(char *) ; i++)
  331.         MMI_SendMessage(listMenuId[2], MM_SETROWCOLUM, 3, i, 0, listString3[i]) ;
  332.  
  333.     if(j== -1){
  334.         j = 0;
  335.     }
  336.     /*    リストメニューの先頭の項目を選択状態とします。        */
  337.     MMI_SendMessage(listMenuId[2], MM_SETROWCOLUM, 4, 
  338.                                         j, 0, listString3[j], TRUE) ;
  339.  
  340.     MMI_SendMessage( numboxId[11], MM_SETNUMBOX, 5, k, 0, 9999, 1, 0);
  341.     
  342.     /*    dialogId_titleでされるオブジェクトを表示する    */
  343.     MMI_SendMessage( dialogId_title , MM_SHOW , 0 ) ; 
  344.  
  345.     /*    オブジェクトをダイアログから取り外す    */
  346.     MMI_SendMessage( deskTopId , MM_DETACH , 0 ) ;
  347.     MMI_SendMessage( buttonId , MM_DETACH , 0 ) ;
  348.  
  349.     return NOERR ;
  350. }
  351.  
  352. /*    initDataMIDESK:mitem2Id[1]:MJ_MITEML40の呼び出し関数    */
  353. int    igo_comment(kobj, messId, argc, pev, trigger)
  354. int        kobj ;
  355. int        messId ;
  356. int        argc ;
  357. EVENT    *pev ;
  358. int        trigger ;
  359. {
  360.     MMI_SendMessage( commentId, MM_SETTEXT, 3, kifu_commentread(), 256, FALSE);
  361.     /*    オブジェクトをダイアログに取り付ける    */
  362.     MMI_SendMessage( commentdialogId, MM_ATTACH , 1 , backId ) ;
  363.  
  364.     /*    commentdialogIdでされるオブジェクトを表示する    */
  365.     MMI_SendMessage( commentdialogId , MM_SHOW , 0 ) ; 
  366.  
  367.     /*    オブジェクトをダイアログから取り外す    */
  368.     MMI_SendMessage( deskTopId , MM_DETACH , 0 ) ;
  369.     MMI_SendMessage( buttonId , MM_DETACH , 0 ) ;
  370.  
  371.     return NOERR ;
  372. }
  373.  
  374. /*    initDataMIDESK:mitem2Id[2]:MJ_MITEML40の呼び出し関数    */
  375. int    igo_chg_put(kobj, messId, argc, pev, trigger)
  376. int        kobj ;
  377. int        messId ;
  378. int        argc ;
  379. EVENT    *pev ;
  380. int        trigger ;
  381. {
  382.     kifu_chg_put();
  383.     comment_dispFunc();    
  384.     return NOERR ;
  385. }
  386.  
  387. /*    initDataMIDESK:mitem2Id[3]:MJ_MITEML40の呼び出し関数    */
  388. int    igo_chg_cancel(kobj, messId, argc, pev, trigger)
  389. int        kobj ;
  390. int        messId ;
  391. int        argc ;
  392. EVENT    *pev ;
  393. int        trigger ;
  394. {
  395.     kifu_chg_cancel();
  396.     comment_dispFunc();
  397.  
  398.     return NOERR ;
  399. }
  400.  
  401. /*    initDataMIDESK:mitem2Id[4]:MJ_MITEML40の呼び出し関数    */
  402. int    igo_nummberdisp(kobj, messId, argc, pev, trigger)
  403. int        kobj ;
  404. int        messId ;
  405. int        argc ;
  406. EVENT    *pev ;
  407. int        trigger ;
  408. {
  409.     kifu_numberdisp();
  410.     comment_dispFunc();
  411.     return NOERR ;
  412. }
  413.  
  414. /*    initDataMIDESK:mitem2Id[5]:MJ_MITEML40の呼び出し関数    */
  415. int    igo_autorebirth(kobj, messId, argc, pev, trigger)
  416. int        kobj ;
  417. int        messId ;
  418. int        argc ;
  419. EVENT    *pev ;
  420. int        trigger ;
  421. {
  422.     /*    オブジェクトをダイアログに取り付ける    */
  423.     MMI_SendMessage( auto_dialogId , MM_ATTACH , 1 , backId ) ;
  424.  
  425.     /*    dialogId_handyでされるオブジェクトを表示する    */
  426.     MMI_SendMessage( auto_dialogId , MM_SHOW , 0 ) ; 
  427.  
  428.     /*    オブジェクトをダイアログから取り外す    */
  429.     MMI_SendMessage( deskTopId , MM_DETACH , 0 ) ;
  430.     MMI_SendMessage( buttonId , MM_DETACH , 0 ) ;
  431.  
  432.     return NOERR ;
  433. }
  434.  
  435. /*    ファイルダイアログ処理関数        */
  436. int fdlgFunc( PathName )
  437. char *PathName ;
  438. {
  439. static    char *ExtStr[] = {"*.kif" , NULL} ;    /*    ワイルドカードの指定    */
  440.     unsigned int MSlctCnt ;    /*    選択されたファイル数(ここでは使っていない) */
  441.     int    Atr ;
  442.     int    ret ;
  443.  
  444.     /*    ファイルダイアログを表示している間は        
  445.             メニューを選択できないようにする         */
  446.     MTL_setAtrObj( deskTopId , MS_INACTIVEL40) ;
  447.     MTL_setAtrObj( buttonId , MS_INACTIVEL40) ;
  448.  
  449.     /*    ファイルダイアログの表示            */
  450.     ret = FDG_DspFileDlg( MMI_GetBaseObj(), FDG_TEXT, NULL, ExtStr, &MSlctCnt ) ;
  451.  
  452.     /*    "実行"が押されたならファイル名を取得する    */
  453.     if( ret )
  454.     {
  455.         FDG_GetPathName( PathName , &Atr , 0 ) ;
  456.     }
  457.  
  458.     /*    選択不可だったものを元に戻す        */
  459.     MTL_resetAtrObj( deskTopId , (~MS_INACTIVEL40)) ;
  460.     MTL_resetAtrObj( buttonId , (~MS_INACTIVEL40)) ;
  461.  
  462.     return ret ;
  463. }
  464.  
  465. /*    棋譜タイトル表示関数        */
  466. int title_dispFunc()
  467. {
  468.     char blackname[21];
  469.     char whitename[21];
  470.     char play_space[21];
  471.     int    komi_id, komi_number, hanmoku_id;
  472.     int    vicdef_id, vicdef_number;
  473.     YMDHM    *play_start;
  474.     YMDHM    *play_end;
  475.     static    char wstr[80], t[80];
  476.     
  477.     kifu_blacknameread( blackname);
  478.     kifu_whitenameread( whitename);
  479.     play_start = kifu_playstart_time_read();
  480.     play_end   = kifu_playend_time_read();
  481.     kifu_playspaceread( play_space);
  482.     kifu_komiread( &komi_id, &komi_number, &hanmoku_id);
  483.     kifu_issueread( &vicdef_id, &vicdef_number);
  484.  
  485.     MMI_SendMessage( textcommentId[0], MM_SETTEXT, 3, blackname, 21, FALSE);
  486.     MMI_SendMessage( textcommentId[1], MM_SETTEXT, 3, whitename, 21, FALSE);
  487.     
  488.     strcpy(wstr, _itoa(play_start->year, t, 10));
  489.     strcat(wstr, "年");
  490.     strcat(wstr, _itoa(play_start->month, t, 10));
  491.     strcat(wstr, "月");
  492.     strcat(wstr, _itoa(play_start->day, t, 10));
  493.     strcat(wstr, "日");
  494.     strcat(wstr, _itoa(play_start->hour, t, 10));
  495.     strcat(wstr, "時");
  496.     strcat(wstr, _itoa(play_start->minute, t, 10));
  497.     strcat(wstr, "分");
  498.     MMI_SendMessage( textcommentId[2], MM_SETTEXT, 3, wstr, 23, FALSE);
  499.     
  500.     strcpy(wstr, _itoa(play_end->year, t, 10));
  501.     strcat(wstr, "年");
  502.     strcat(wstr, _itoa(play_end->month, t, 10));
  503.     strcat(wstr, "月");
  504.     strcat(wstr, _itoa(play_end->day, t, 10));
  505.     strcat(wstr, "日");
  506.     strcat(wstr, _itoa(play_end->hour, t, 10));
  507.     strcat(wstr, "時");
  508.     strcat(wstr, _itoa(play_end->minute, t, 10));
  509.     strcat(wstr, "分");
  510.     MMI_SendMessage( textcommentId[3], MM_SETTEXT, 3, wstr, 23, FALSE);
  511.     
  512.     MMI_SendMessage( textcommentId[4], MM_SETTEXT, 3, play_space, 21, FALSE);
  513.     
  514.     switch(komi_id ){
  515.         case 0: strcpy(wstr, "黒コミ出し");break;
  516.         case 1: strcpy(wstr, "白コミ出し");break;
  517.         case 2: strcpy(wstr, "コミなし  ");break;
  518.         default: strcpy(wstr, "          ");break;
  519.     }
  520.     if(komi_id!=2){
  521.         strcat(wstr, _itoa(komi_number, t, 10));
  522.         strcat(wstr, "目");
  523.         switch(hanmoku_id ){
  524.             case 0: strcat(wstr, "半");break;
  525.             case 1: strcat(wstr, "  ");break;
  526.             default:strcat(wstr, "  ");break;
  527.         }
  528.     }
  529.     MMI_SendMessage( textcommentId[5], MM_SETTEXT, 3, wstr, 21, FALSE);
  530.     
  531.     switch(vicdef_id ){
  532.         case 0: strcpy(wstr, "黒  ");break;
  533.         case 1: strcpy(wstr, "白  ");break;
  534.         case 2: strcpy(wstr, "ジゴ");break;
  535.         default: strcpy(wstr, "    ");break;
  536.     }
  537.     if(vicdef_number==0){
  538.         strcat(wstr, "中押し勝ち");
  539.     }else{
  540.         strcat(wstr, _itoa(vicdef_number, t, 10));
  541.         strcat(wstr, "目");
  542.         if(hanmoku_id == 0){
  543.             strcat(wstr, "半勝ち");
  544.         }else if(vicdef_id != 2){
  545.             strcat(wstr, "勝ち");
  546.         }
  547.     }
  548.     
  549.     MMI_SendMessage( textcommentId[6], MM_SETTEXT, 3, wstr, 21, FALSE);
  550.     
  551.     MMI_SendMessage( title_dispdialogId , MM_SHOW , 0 ) ; 
  552.  
  553.     return 0;
  554. }
  555.  
  556. /*    棋譜タイトルクリア関数        */
  557. int title_dispclearFunc()
  558. {
  559.     static    char wstr[80] = "                              ";
  560.     
  561.  
  562.     MMI_SendMessage( textcommentId[0], MM_SETTEXT, 3, wstr, 21, FALSE);
  563.     MMI_SendMessage( textcommentId[1], MM_SETTEXT, 3, wstr, 21, FALSE);
  564.     MMI_SendMessage( textcommentId[2], MM_SETTEXT, 3, wstr, 23, FALSE);
  565.     MMI_SendMessage( textcommentId[3], MM_SETTEXT, 3, wstr, 23, FALSE);
  566.     MMI_SendMessage( textcommentId[4], MM_SETTEXT, 3, wstr, 21, FALSE);
  567.     MMI_SendMessage( textcommentId[5], MM_SETTEXT, 3, wstr, 21, FALSE);
  568.     MMI_SendMessage( textcommentId[6], MM_SETTEXT, 3, wstr, 21, FALSE);
  569.     
  570.     MMI_SendMessage( title_dispdialogId , MM_SHOW , 0 ) ; 
  571.  
  572.     return 0;
  573. }
  574.  
  575. /*    コメント出力関数関数        */
  576. int comment_dispFunc()
  577. {
  578.  
  579.     kifu_disp();
  580.     MMI_SendMessage( textcommentId[7], MM_SETTEXT, 3, kifu_commentread(), 256, FALSE);
  581.     
  582.     MMI_SendMessage( textcommentId[7] , MM_SHOW , 0 ) ; 
  583.  
  584.     return 0;
  585. }
  586.